const userModel = require("../models/userModel");
const JWT = require("../utils/jwtUtil");

/* 处理注册 */
async function register(username, password) {
  /* 查看用户名是否存在 存在则注册失败 */
  const users = await userModel.getUsers({ username });
  if (users.length) {
    // 履约数据
    return { msg: "注册失败", reason: "用户名已存在" };
  }

  /* 调用模型层的添加用户方法 得到添加的结果 */
  const result = await userModel.addUser({ username, password });

  // 将结果丢还视图层
  return result;
}

/* 处理登录 */
async function login(username, password) {
  // 死等模型层查询用户的结果
  const users = await userModel.getUsers({ username, password });

  /* 只要查询结果不为空数组 即为登录成功 */
  if (users.length) {
    /* 发放Token */
    const token = JWT.generate(users[0]);

    // 向后继续履约
    return { msg: "登录成功", token };
  } else {
    // 向后继续履约
    return { msg: "登录失败", reason: "查无此人" };
  }
}

/* 处理个人中心请求 */
async function getUserDetail(id) {
  const users = await userModel.getUsers({ _id: id });
  if (users.length) {
    return users[0];
  } else {
    return { msg: "查无此人" };
  }
}

module.exports = {
  register,
  login,
  getUserDetail,
};
